home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / automake-1.9 / compile < prev    next >
Encoding:
Text File  |  2005-10-13  |  3.6 KB  |  143 lines

  1. #! /bin/sh
  2. # Wrapper for compilers which do not understand `-c -o'.
  3.  
  4. scriptversion=2005-05-14.22
  5.  
  6. # Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
  7. # Written by Tom Tromey <tromey@cygnus.com>.
  8. #
  9. # This program is free software; you can redistribute it and/or modify
  10. # it under the terms of the GNU General Public License as published by
  11. # the Free Software Foundation; either version 2, or (at your option)
  12. # any later version.
  13. #
  14. # This program is distributed in the hope that it will be useful,
  15. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. # GNU General Public License for more details.
  18. #
  19. # You should have received a copy of the GNU General Public License
  20. # along with this program; if not, write to the Free Software
  21. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  22.  
  23. # As a special exception to the GNU General Public License, if you
  24. # distribute this file as part of a program that contains a
  25. # configuration script generated by Autoconf, you may include it under
  26. # the same distribution terms that you use for the rest of that program.
  27.  
  28. # This file is maintained in Automake, please report
  29. # bugs to <bug-automake@gnu.org> or send patches to
  30. # <automake-patches@gnu.org>.
  31.  
  32. case $1 in
  33.   '')
  34.      echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
  35.      exit 1;
  36.      ;;
  37.   -h | --h*)
  38.     cat <<\EOF
  39. Usage: compile [--help] [--version] PROGRAM [ARGS]
  40.  
  41. Wrapper for compilers which do not understand `-c -o'.
  42. Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
  43. arguments, and rename the output as expected.
  44.  
  45. If you are trying to build a whole package this is not the
  46. right script to run: please start by reading the file `INSTALL'.
  47.  
  48. Report bugs to <bug-automake@gnu.org>.
  49. EOF
  50.     exit $?
  51.     ;;
  52.   -v | --v*)
  53.     echo "compile $scriptversion"
  54.     exit $?
  55.     ;;
  56. esac
  57.  
  58. ofile=
  59. cfile=
  60. eat=
  61.  
  62. for arg
  63. do
  64.   if test -n "$eat"; then
  65.     eat=
  66.   else
  67.     case $1 in
  68.       -o)
  69.     # configure might choose to run compile as `compile cc -o foo foo.c'.
  70.     # So we strip `-o arg' only if arg is an object.
  71.     eat=1
  72.     case $2 in
  73.       *.o | *.obj)
  74.         ofile=$2
  75.         ;;
  76.       *)
  77.         set x "$@" -o "$2"
  78.         shift
  79.         ;;
  80.     esac
  81.     ;;
  82.       *.c)
  83.     cfile=$1
  84.     set x "$@" "$1"
  85.     shift
  86.     ;;
  87.       *)
  88.     set x "$@" "$1"
  89.     shift
  90.     ;;
  91.     esac
  92.   fi
  93.   shift
  94. done
  95.  
  96. if test -z "$ofile" || test -z "$cfile"; then
  97.   # If no `-o' option was seen then we might have been invoked from a
  98.   # pattern rule where we don't need one.  That is ok -- this is a
  99.   # normal compilation that the losing compiler can handle.  If no
  100.   # `.c' file was seen then we are probably linking.  That is also
  101.   # ok.
  102.   exec "$@"
  103. fi
  104.  
  105. # Name of file we expect compiler to create.
  106. cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
  107.  
  108. # Create the lock directory.
  109. # Note: use `[/.-]' here to ensure that we don't use the same name
  110. # that we are using for the .o file.  Also, base the name on the expected
  111. # object file name, since that is what matters with a parallel build.
  112. lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
  113. while true; do
  114.   if mkdir "$lockdir" >/dev/null 2>&1; then
  115.     break
  116.   fi
  117.   sleep 1
  118. done
  119. # FIXME: race condition here if user kills between mkdir and trap.
  120. trap "rmdir '$lockdir'; exit 1" 1 2 15
  121.  
  122. # Run the compile.
  123. "$@"
  124. ret=$?
  125.  
  126. if test -f "$cofile"; then
  127.   mv "$cofile" "$ofile"
  128. elif test -f "${cofile}bj"; then
  129.   mv "${cofile}bj" "$ofile"
  130. fi
  131.  
  132. rmdir "$lockdir"
  133. exit $ret
  134.  
  135. # Local Variables:
  136. # mode: shell-script
  137. # sh-indentation: 2
  138. # eval: (add-hook 'write-file-hooks 'time-stamp)
  139. # time-stamp-start: "scriptversion="
  140. # time-stamp-format: "%:y-%02m-%02d.%02H"
  141. # time-stamp-end: "$"
  142. # End:
  143.